package luogu;

import java.util.Scanner;

public class A4017 {
    static int[] h;
    static int[] e;
    static int[] ne;
    static int idx=1;
    static int[] vis;
static int n;
static int m;
static int[] d;//入度
    static int[] up;//出度
    static int res=0;//食物链数
static void add(int a,int b){
    e[idx]=b;
    ne[idx]=h[a];
    h[a]=idx++;
}
static void dfs(int a){
    if(up[a]==0){
        //该生物出度为0，是食物链终点，添加食物链,返回
        res++;
        return;
    }
    for(int edge=h[a];edge!=0;edge=ne[edge]){
        int end=e[edge];
        if(vis[end]==0){
            vis[end]=1;
            dfs(end);
            vis[end]=0;//恢复现场
        }
    }
}
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
n=sc.nextInt();
m=sc.nextInt();
h=new int[n+1];
vis=new int[n+1];
d=new int[n+1];
e=new int[m+10];
ne=new int[m+10];
up=new int[n+1];
int a,b;
for(int i=1;i<=m;i++){
    a=sc.nextInt();
    b=sc.nextInt();
    add(a,b);
    d[b]++;
    up[a]++;
}
for(int i=1;i<=n;i++){
    if(d[i]==0&&up[i]!=0)
        dfs(i);
}
        System.out.println(res%80112002);
    }
}
